LinuxQMISDK-Lite  SLQS04.00.27
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
MbimTransport.h
Go to the documentation of this file.
1 
6 #ifndef __MBIM_TRANSPORT_H__
7 #define __MBIM_TRANSPORT_H__
8 
9 
10 #include <stdint.h>
11 #include <pthread.h>
12 #include "MbimIndicator.h"
13 #include "MbimTransaction.h"
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 
20 #define MBIM_UUID_SIZE 16
22 #define MBIM_MAX_CIDS 64
24 // TODO: determine at runtime by quering USB descriptor or ioctl to driver.
25 #define MBIM_MAX_CTRL_TRANSFER 4096
28 #define MBIM_COMMAND_TYPE_QUERY 0
29 #define MBIM_COMMAND_TYPE_SET 1
31 #define MBIM_STATUS_SUCCESS 0
32 #define MBIM_STATUS_FAILURE 2
80 typedef struct MbimTransport
81 {
82  int deviceFd; // FD of device.
83 #ifndef EVENT_FD_UNSUPPORTED
84  int shutdownFd; // FD of shutdown event.
85 #else
86  int shutdownFd[2]; // FDs of shutdown pipe.
87 #endif
88  pthread_mutex_t writeLock; // Protect write operations.
89  pthread_t readThread;
90  uint32_t transactionId;
91  pthread_mutex_t transactionIdLock;
92  MbimTransaction* transactionList; // Head of list of outstanding transactions.
93  pthread_mutex_t transactionListLock;
94  struct MultiFragmentMessage* pIncomingMessage; // Workspace to assemble incoming fragments.
95  MbimIndicator* indicatorList; // Head of list of indicators.
96  pthread_mutex_t indicatorListLock;
98 
111 int MbimTransport_Initialize(MbimTransport* pThis, char *devicePath, uint32_t maxExpectedInformationLength);
112 
119 
137  MbimTransport* pThis,
138  const uint8_t* deviceServiceId,
139  uint32_t cid,
140  uint32_t commandType,
141  uint8_t* informationBuffer,
142  uint16_t informationBufferLength,
143  MbimTransaction* pTransaction
144  );
145 
153 
160 void MbimTransport_CancelTransaction(MbimTransport* pThis, uint32_t transactionId);
161 
169 
177 
178 #ifdef __cplusplus
179 } /* extern "C" { */
180 #endif
181 
182 #endif //__MBIM_TRANSPORT_H__
MbimIndicator * indicatorList
Definition: MbimTransport.h:95
pthread_mutex_t indicatorListLock
Definition: MbimTransport.h:96
int MbimTransport_SendCommand(MbimTransport *pThis, const uint8_t *deviceServiceId, uint32_t cid, uint32_t commandType, uint8_t *informationBuffer, uint16_t informationBufferLength, MbimTransaction *pTransaction)
void MbimTransport_ShutDown(MbimTransport *pThis)
struct MbimTransport MbimTransport
pthread_mutex_t transactionListLock
Definition: MbimTransport.h:93
void MbimTransport_CancelTransaction(MbimTransport *pThis, uint32_t transactionId)
pthread_mutex_t writeLock
Definition: MbimTransport.h:88
Definition: MbimTransport.h:80
Definition: MbimTransaction.h:68
int shutdownFd
Definition: MbimTransport.h:84
uint32_t MbimTransport_GetNextTransactionId(MbimTransport *pThis)
void MbimTransport_DetachIndicator(MbimTransport *pThis, MbimIndicator *pIndicator)
Definition: MbimIndicator.h:58
uint32_t transactionId
Definition: MbimTransport.h:90
pthread_t readThread
Definition: MbimTransport.h:89
pthread_mutex_t transactionIdLock
Definition: MbimTransport.h:91
void MbimTransport_AttachIndicator(MbimTransport *pThis, MbimIndicator *pIndicator)
struct MultiFragmentMessage * pIncomingMessage
Definition: MbimTransport.h:94
int MbimTransport_Initialize(MbimTransport *pThis, char *devicePath, uint32_t maxExpectedInformationLength)
int deviceFd
Definition: MbimTransport.h:82
MbimTransaction * transactionList
Definition: MbimTransport.h:92

Copyright (c) 2011-2015 Sierra Wireless, Inc. All rights reserved